package com.phiture.erp.produce.core.service;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import com.phiture.erp.produce.core.pojo.vo.ProduceInEventPageReqVO;
import com.phiture.erp.produce.core.pojo.vo.ProduceInEventSaveReqVO;
import com.phiture.erp.produce.dal.entity.ErpProduceInEventDO;
import com.phiture.erp.produce.dal.entity.ErpProduceInEventItemsDO;

/**
 * 生产入库事务 Service 接口
 *
 * @author lekaihuai
 */
public interface ErpProduceInEventService {

    /**
     * 创建生产入库事务
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createProduceInEvent(@Valid ProduceInEventSaveReqVO createReqVO);

    /**
     * 更新生产入库事务
     *
     * @param updateReqVO 更新信息
     */
    void updateProduceInEvent(@Valid ProduceInEventSaveReqVO updateReqVO);

    /**
     * 删除生产入库事务
     *
     * @param id 编号
     */
    void deleteProduceInEvent(Long id);

    /**
     * 获得生产入库事务
     *
     * @param id 编号
     * @return 生产入库事务
     */
    ErpProduceInEventDO getProduceInEvent(Long id);

    /**
     * 获得生产入库事务分页
     *
     * @param pageReqVO 分页查询
     * @return 生产入库事务分页
     */
    PageResult<ErpProduceInEventDO> getProduceInEventPage(ProduceInEventPageReqVO pageReqVO);


    /**
     * 获得生产入库事务列表(未完成)
     *
     * @return 生产入库事务列表
     */
    List<ErpProduceInEventDO> getProduceInEventList();

    // ==================== 子表（生产入库事务明细） ====================

    /**
     * 获得生产入库事务明细列表
     *
     * @param parentId 父ID
     * @return 生产入库事务明细列表
     */
    List<ErpProduceInEventItemsDO> getProduceInEventItemsListByParentId(Long parentId);



}